function inputAssistant(options) {
	var lastValue = "";
	var timeId = 0;// 焦点离开输入框后200ms后隐藏
	// 获取事件源的对象
	var ev = window.event || arguments.callee.caller.arguments[0];
	var curInputDom = ev.srcElement || ev.target;

	var curInput = $(curInputDom); 
	// 默认div设置
	var divSet = {
		width : curInput.width(), // 提示框的宽度 默认跟文本框一样
		optionCount : 10,// 如果发生过滤，显示过滤后候选项最多个数
		maxheight : 10 * 25, // 提示框的最大高度
		top : 6, // 与文本框的上下距离
		ELvariable : "",// 直接从请求中获取的变量
		type : "post", // ajax 请求类型
		async : false, // 是否异步请求
		getValue : function(value) {
		}, // 当回车 或 鼠标点击选中值的时候执行
		clearValue : function() {
		}, // 当重新请求时清空Value值
		getText : function(text) {
		}
	};// 当回车 或 鼠标点击选中值的时候执行
	var autoCompleteDiv = $('<div id="autoComplete_Group"></div>');
	autoCompleteDiv.css({
		"left" : curInput.position().left,
		"top" : curInput.position().top + curInput.height() + divSet.top,
		"width" : divSet.width,
		"max-height" : divSet.maxheight,
		"overflow" : "auto",
		"position" : "absolute",
		"background-color" : "white",
		"z-index":9999//显示在最上层
	});
	curInput.after(autoCompleteDiv);
	// autoCompleteDiv.show();
	// autoCompleteDiv.append("dsfsdfdsfdsfdfdsf");
	// return;
	curInput.bind("keydown", keydown_process);
	curInput.bind("keyup", keyup_process);
	curInput.bind("blur", blur_process);
	autoCompleteDiv.bind("focus", focus_div);
	autoCompleteDiv.bind("mouseout", mouseout_div);
	//在focus事件中，无论输入框中原来是否有值都显示所有默认候选个数
	getData("", processAndShow, options);
	function blur_process() {
		timeId = setTimeout(function() {
			autoCompleteDiv.remove();
		}, 200);

	}
	function focus_div() {
		clearTimeout(timeId);
		curInput.focus();
	}
	function mouseout_div() {
		autoCompleteDiv.find(".nowRow").removeClass("nowRow");
	}
	function keydown_process(e) {
		if (!autoCompleteDiv || autoCompleteDiv.is(":hidden")) {
			return;
		}
		switch (e.keyCode) {
		case 38://向上方向键，到行首则又从末尾开始选择
			e.preventDefault();
			var p = autoCompleteDiv.find(".nowRow").prev();
			if (p.length > 0) {
				autoCompleteDiv.setScroll(divSet.maxheight, p);
				p.mouseover();
				setValue(p);
			} else {
				p = autoCompleteDiv.find(":last");
				if (p.length > 0) {
					autoCompleteDiv.setScroll(divSet.maxheight, p);
					p.mouseover();
					setValue(p);
				}
			}
			break;
		case 40://向下方向键，到行首末又从行首开始选择
			e.preventDefault();
			var n = autoCompleteDiv.find(".nowRow").next();
			if (n.length > 0) {
				autoCompleteDiv.setScroll(divSet.maxheight, n);
				n.mouseover();
				setValue(n);
			} else {
				n = autoCompleteDiv.find(":first");
				if (n.length > 0) {
					autoCompleteDiv.setScroll(divSet.maxheight, n);
					n.mouseover();
					setValue(n);
				}
			}
			break;
		case 13://如果是enter键则把当前选择的行内容加载到输入框
			e.preventDefault();
			var p = autoCompleteDiv.find(".nowRow");
			if (p.length > 0) {
				setValue(p);
			}
			autoCompleteDiv.hide();
			break;
		}
	}
	function setValue(curDiv) {
		divSet.getValue(curDiv.find("input:hidden").val());
		curInput.val(curDiv.text());
		divSet.getText(curInput.val());
	}
	function keyup_process(e) {
		if (e.keyCode == 38 || e.keyCode == 40 || e.keyCode == 13 || e.keyCode == 37 || e.keyCode == 39) {
			return;
		}
		if (curInput.val() == lastValue && curInput.val() != "") {
			return; // 判断是否跟上一次的值相等, 考虑到用户正在打字 避免相同的值多次请求
		}
		getData(curInput.val(), processAndShow, options);
	}
	// 两种方式获取候选项：1、从请求页面获取变量根据拼音或者汉字模糊过滤 2、从url用ajax查询返回
	function getData(o, processAndShow, options) {
		lastValue = curInput.val(); // 记录请求值
		var data = [];
		var nowCount = 0;// 记录当前已经加入的候选项个数
		var inputValue = $.trim(o).toLowerCase();
		// 如果输入值为空则显示前optionCount个
		if (inputValue == "") {
			for ( var i = 0, len = options.length; i < 10 && i <= len - 1; i++) {
				var one = {};
				one["text"] = options[i].text;
				one["value"] = options[i].value;
				data.push(one);
			}
		} else {

			var inputPattern = /^[A-Za-z]/;// 检测输入值是否拼音(对拼音汉字混合输入不考虑，全lowerCase后直接indexOf处理)
			var allPinyin = inputPattern.test(inputValue);
			$.each(options, function(index, context) {
				// 超过设置候选个数跳出循环
				if (nowCount >= divSet.length) {
					return false;
				}
				if (allPinyin) {
					var optionPinyin = spell(context.text);
					// 1、输入值是拼音且待选值拼音包含此输入值
					// 2、输入值是拼音且待选值汉字首字母串包含此输入值
					if (optionPinyin.head.indexOf(inputValue) >= 0 || optionPinyin.pinyin.indexOf(inputValue) >= 0) {
						var one = {};
						one["text"] = context.text;
						one["value"] = context.value;
						data.push(one);
						nowCount = nowCount + 1;
					}
				} else {// 3、输入值非纯拼音且待选值包含输入值
					if (context.text.toLowerCase().indexOf(inputValue) >= 0) {
						var one = {};
						one["text"] = context.text;
						one["value"] = context.value;
						data.push(one);
						nowCount = nowCount + 1;
					}
				}
			});
		}
		processAndShow(data);
	}
	// 将数据展示填充入div并展示
	function processAndShow(data) {

		if (data.length == 0) {
			autoCompleteDiv.hide();
			return;
		}
		autoCompleteDiv.empty();
		$.each(data, function(index, context) {
			autoCompleteDiv.append('<div style="width:100%">' + context.text + '<input type="hidden" value="' + context.value
					+ '" /></div>');
		});
		var divs = autoCompleteDiv.children();
		divs.mouseover(function() {
			autoCompleteDiv.find(".nowRow").removeClass("nowRow");
			$(this).addClass("nowRow");
		});
		divs.click(function() {
			divSet.getValue($(this).find("input:hidden").val());
			curInput.val($(this).text());
			divSet.getText(curInput.val());
			lastValue = "";
			autoCompleteDiv.hide();
		});
		autoCompleteDiv.show();
		//默认选中第一行
		var n = autoCompleteDiv.find(":first");
		if (n.length > 0) {
			n.mouseover();
		}
	}
	$.fn.setScroll = function(h, o) {
		var offset = o.offset();
		if (offset.top > h) {
			$(this).scrollTop(offset.top - h);
		} else {
			if (offset.top < 25) { // 项的高度 对应样式表 td height:25px
				$(this).scrollTop(0);
			}
		}
	};
};